﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;

namespace FrogEngine
{
	/// <summary>
	/// ParticleSettings contain no state
	/// </summary>
	/// <typeparam name="V"></typeparam>
	public abstract class ParticleSettings<V> : IParticleSettings<V>
		where V : struct, IParticleVertex
	{
		public ParticleSettings()
		{
			random = new Random(1234);
		}

		protected Random random;

		public abstract int MaxParticles { get; }
		public abstract string TextureAssetName { get; }
		public abstract float LifeTime { get; }
		public abstract BlendState BlendState { get; }

		public abstract void FillVertices(ref V v0, ref V v1, ref V v2, ref V v3, ref Vector3 pos, ref Vector3 vel, float time);
	}
}
